#include "Shm.hpp"
#include"common.hpp"
// 这个文件复杂打开共享内存，并且往里面写数据

// int main()
// {
//     shm m(pathname, projid, CREATER);
//     m.Create();
//     char *mem = (char *)m.getmem();
//     int index = 0;
//     for (char c = 'A'; c <= 'Z'; c++, index+=2)
//     {
//         sleep(1);
//         mem[index] = c;
//         mem[index + 1] = c;
//         sleep(1);
//         mem[index + 2] = 0;  //强行停止
//     }
//     return 0;
// }


//生产者需要开辟出共享内存，并且往里面写数据
int main()
{
    NameFifo s1(PATH,FILENAME); //创建出一个命名管道
    FileOper s2(PATH,FILENAME);
    s2.OpenforWrite();
    shm m(pathname,projid,CREATER);//此时已经创建出了共享内存，并且已经把共享内存和虚拟地址空间关联起来了
    char* mem = (char*)m.getmem();
    int index = 0;
    for(char c = 'A' ; c <= 'Z' ; c++,index+=2)
    {
        sleep(1);
        mem[index] = c;
        mem[index + 1] = c;
        sleep(1);
        mem[index + 2] = 0;
        s2.wakeup();
    }
    s2.Close();
    return 0;
}


//不难发现此时如果这么做的话，那么此时我们在输出的时候，并不会按着我们预期的输出，所以此时可以和之前的命名管道一起用